Обновление до v1.0
Ресурсы
Что нужно знать перед обновлением
Мажорная версия 1.0 dbt v1 включает ряд изменений, нарушающих обратную совместимость! По возможности мы сохранили обратную совместимость с прежним поведением, а там, где это необходимо, упростили миграцию.
Переименованные поля в dbt_project.yml
Эти изменения затрагивают всех:
- model-paths заменяет
source-pathsвdbt-project.yml. - seed-paths заменяет
data-pathsвdbt-project.yml; значение по умолчанию —seeds. - Параметр
modules-pathпереименован в packages-install-path. Кроме того, значение по умолчанию теперьdbt_packages, а неdbt_modules. Возможно, вам потребуется обновить это значение вclean-targets. - Значение по умолчанию для
quote_columnsтеперьTrueдля всех адаптеров, кроме Snowflake.
А эти, скорее всего, вас не затронут:
- Значение по умолчанию для test-paths изменено на форму множественного числа —
tests. - Значение по умолчанию для analysis-paths изменено на форму множественного числа —
analyses.
Тесты
Два типа тестов теперь называются «singular» (единичные) и «generic» (универсальные) вместо «data» и «schema» соответственно. Метод выбора test_type: принимает значения test_type:singular и test_type:generic. (Для обратной совместимости он также принимает test_type:schema и test_type:data.) Без обратной совместимости: флаги --data и --schema команды dbt test больше не поддерживаются, а теги 'data' и 'schema' больше не присваиваются тестам автоматически. Обновлённая документация: тесты данных, выбор тестов, методы выбора.
Флаг/свойство greedy переименован в indirect_selection, значение которого по умолчанию теперь eager. Примечание: это возвращает выбор тестов по умолчанию к поведению, которое было до v0.20. Команда dbt test -s my_model будет выбирать тесты с несколькими родительскими ресурсами, например relationships, которые зависят от невыбранных ресурсов. Чтобы получить поведение, введённое в v0.20 и v0.21, задайте --indirect-selection=cautious в CLI или indirect_selection: cautious в селекторах YAML. Обновлённая документация: примеры выбора тестов, селекторы YAML.
Глобальные макросы
Глобальные макросы проекта реорганизованы, а некоторые старые неиспользуемые макросы удалены: column_list, column_list_for_create_table, incremental_upsert. Это вряд ли повлияет на ваш проект.
Установка
- Документация по установке отражает особенности установки отдельных адаптеров
- Команда
python -m pip install dbtбольше не поддерживается и будет выдавать явную ошибку. Установите нужный плагин адаптера с помощьюpython -m pip install dbt-<adapter>. - Команда
brew install dbtбольше не поддерживается. Установите нужный плагин адаптера (Postgres, Redshift, Snowflake или BigQuery) с помощьюbrew install dbt-<adapter>. - Прекращена официальная поддержка Python 3.6, жизненный цикл которого заканчивается 23 декабря 2021 года
Для пользователей плагинов адаптеров
- BigQuery: поддержка таблиц, секционированных по времени загрузки данных, официально объявлена устаревшей в пользу современных подходов. Вместо этого используйте
partition_byи стратегии инкрементального моделирования. Дополнительные сведения см. в разделе Инкрементальные модели.
Для разработчиков плагинов и других интеграций
Мы представили новый интерфейс структурированных событий и перевели всё журналирование dbt на эту новую систему. Это включает изменение, нарушающее обратную совместимость плагинов адаптеров, для которого потребуется очень простая миграция. Подробнее см. в README модуля events. Если вы поддерживаете плагин другого типа, которому необходимо прежнее журналирование, пока что вы можете снова включить его с помощью переменной окружения (DBT_ENABLE_LEGACY_LOGGER=True); учтите, что мы удалим эту возможность в одной из будущих версий dbt.
dbt RPC Server выделен из dbt-core и теперь поставляется отдельным пакетом. Его функциональность будет полностью выведена из эксплуатации к концу 2022 года в пользу нового dbt Server. Вместо dbt rpc используйте dbt-rpc serve.
Артефакты: новые схемы (manifest v4, run results v4, sources v3). Основные изменения: добавлены узлы metrics; узлы schema test и data test переименованы в узлы generic test и singular test; значения порогов свежести по умолчанию выглядят немного иначе.
Прекращение поддержки давно устаревших возможностей
Ряд внутренних механизмов из предыдущих минорных версий, для которых выводились предупреждения об устаревании, теперь окончательно выведен из эксплуатации.
- Аргумент
packagesфункции dispatch больше не поддерживается, и его использование приведёт к исключению. - Макрос "adapter_macro" больше не поддерживается. Вместо него используйте метод dispatch, чтобы найти макрос и вызвать полученный результат.
- Аргумент
releaseудалён из методаexecute_macro.
Новые возможности и изменения в документации
- Добавлен новый тип узлов — метрики
- Универсальные тесты можно определять в
tests/generic(новая возможность), а также вmacros/(как и прежде) - Парсинг: частичный и статический парсинг теперь включены по умолчанию.
- Глобальные настройки стандартизированы. Соответствующие обновления внесены в документацию по глобальным флагам CLI и
profiles.yml. - Команда
initполучила совершенно новый интерфейс и принципы взаимодействия. Теперь она предназначена не только для начинающих пользователей. - Добавлены подселекторы
result:<status>для более гибких повторных запусков при ошибках в моделях dbt и сбоях тестов. См. примеры: Профессиональные советы по рабочим процессам - Переменные окружения с префиксом для секретов теперь разрешены только в
profiles.ymlиpackages.yml